From: Debian Qt/KDE Maintainers Date: Mon, 23 Nov 2020 18:16:00 +0000 (+0000) Subject: emit QScreen::geometryChanged when the logical DPI changes X-Git-Tag: archive/raspbian/5.15.1+dfsg-4+rpi1^2~14 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=9163b1ec2a35a19b556f4cc24d6326eb6cb6c5af;p=qtbase-opensource-src.git emit QScreen::geometryChanged when the logical DPI changes Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=5c7307775d32ae0a Last-Update: 2020-09-30 Add the missing call to QScreenPrivate::emitGeometryChangeSignals() along with an emission of physicalDotsPerInchChanged() since that is calculated from geometry and physical size. Rearrange the code in QGuiApplicationPrivate::processScreenGeometryChange() to prevent duplicate emissions of geometryChanged(), physicalDotsPerInchChanged() which this change would introduce. Gbp-Pq: Name emit_geometry_changed.diff --- diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 239a78313..ef0906058 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -3162,13 +3162,14 @@ void QGuiApplicationPrivate::processScreenGeometryChange(QWindowSystemInterfaceP bool availableGeometryChanged = e->availableGeometry != s->d_func()->availableGeometry; s->d_func()->availableGeometry = e->availableGeometry; - if (geometryChanged) { - Qt::ScreenOrientation primaryOrientation = s->primaryOrientation(); + const Qt::ScreenOrientation primaryOrientation = s->primaryOrientation(); + if (geometryChanged) s->d_func()->updatePrimaryOrientation(); - emit s->geometryChanged(s->geometry()); + s->d_func()->emitGeometryChangeSignals(geometryChanged, availableGeometryChanged); + + if (geometryChanged) { emit s->physicalSizeChanged(s->physicalSize()); - emit s->physicalDotsPerInchChanged(s->physicalDotsPerInch()); emit s->logicalDotsPerInchChanged(s->logicalDotsPerInch()); if (s->primaryOrientation() != primaryOrientation) @@ -3178,8 +3179,6 @@ void QGuiApplicationPrivate::processScreenGeometryChange(QWindowSystemInterfaceP updateFilteredScreenOrientation(s); } - s->d_func()->emitGeometryChangeSignals(geometryChanged, availableGeometryChanged); - resetCachedDevicePixelRatio(); } diff --git a/src/gui/kernel/qscreen.cpp b/src/gui/kernel/qscreen.cpp index df628fcc7..a1afc1ba1 100644 --- a/src/gui/kernel/qscreen.cpp +++ b/src/gui/kernel/qscreen.cpp @@ -88,6 +88,9 @@ void QScreenPrivate::updateGeometriesWithSignals() void QScreenPrivate::emitGeometryChangeSignals(bool geometryChanged, bool availableGeometryChanged) { Q_Q(QScreen); + if (geometryChanged) + emit q->geometryChanged(geometry); + if (availableGeometryChanged) emit q->availableGeometryChanged(availableGeometry); @@ -96,6 +99,9 @@ void QScreenPrivate::emitGeometryChangeSignals(bool geometryChanged, bool availa for (QScreen* sibling : siblings) emit sibling->virtualGeometryChanged(sibling->virtualGeometry()); } + + if (geometryChanged) + emit q->physicalDotsPerInchChanged(q->physicalDotsPerInch()); } void QScreenPrivate::setPlatformScreen(QPlatformScreen *screen)